Rage Bait Content on Facebook: Mapping the Perceived Impacts and Engagement Behavior of Students at Visayas State University

Author

ViSERDAC

Published

February 1, 2026

1 Descriptive

1.1 Degree

Code
## need cleaning
socio_demo_dta |> 
  mutate(degree = str_remove_all(degree, "[0-9]|-")) |>
  mutate(degree = str_trim(degree, side = "both")) |> 
  count(degree, sort = T) |> 
  View()

1.2 Social Media

1.2.1 Platform

  • Female students are more active across diverse platforms, while male students concentrate usage on fewer platforms.

  • Females reported higher usage across nearly all platforms, with Facebook, TikTok, and Instagram as their top three.

  • Males also favored Facebook, but their engagement was lower overall, with Instagram and TikTok following.

Code
## subtitle
plt_subtitle <- str_wrap("Female students reported higher usage across most platforms, with Facebook, TikTok, and Instagram as the top three; male students also favored Facebook but showed comparatively lower engagement overall.", 120)

## plotting
plt_soc_med <- 
  soc_med_dta |>
  count(sex, social_media) |>
  group_by(sex) |>
  mutate(
    pct = n / sum(n),
    pct_lab = str_c("n=", n),
    social_media = reorder_within(social_media, n, sex)
  ) |>
  ggplot(aes(n, social_media, fill = sex)) +
  geom_col(width = 0.7) +
  geom_text(aes(label = pct_lab), hjust = -0.1) +
  scale_y_reordered() +
  scale_x_continuous(limits = c(0, 80)) +
  facet_wrap(~ sex, scales = "free_y") +
  custom_theme +
  labs(
    title = "Which social media platforms do you use most often?",
    subtitle = plt_subtitle,
    fill = element_blank(),
    y = element_blank()
  )

## saving data
ggsave(
  plot = plt_soc_med,
  filename = "plot/soc_med_gender.jpg",
  unit = "in",
  width = 10,
  height = 7
)

## display plot
knitr::include_graphics("plot/soc_med_gender.jpg")

1.2.2 Social media content engagement by gender

  • Gender differences highlight that females lean toward lifestyle and advocacy, while males gravitate more toward gaming and politics.

  • Females engaged most with entertainment, music, and lifestyle content, followed by news and educational posts.

  • Males showed similar interest in entertainment and music but had stronger engagement with gaming content compared to females.

Code
## plot subtitle
plt_subtitle <- str_wrap("Entertainment, music, and lifestyle content were the most engaged categories among female students, while males showed stronger engagement with entertainment, music, and gaming; overall, females reported higher engagement across most content types.", 140)

plt_soc_med_content_gender <- 
  soc_med_content_dta |> 
  # filter(!str_detect( social_media, "All of it")) |> 
  count(sex, social_media_content) |> 
  group_by(sex) |> 
  mutate(pct = n / sum(n)) |> 
  mutate(social_media_content = reorder_within(social_media_content, pct, sex)) |> 
  mutate(pct_label = str_c("n=", n, " (", round(pct*100, ), "%)")) |> 
  ggplot(aes(pct, social_media_content, fill = sex)) + 
  geom_col(width = 0.8) +
  geom_text(aes(label = pct_label), hjust = -0.1) +
  scale_x_continuous(limits = c(0, 0.3), labels = scales::percent_format()) +
  scale_y_reordered() +
  facet_wrap(~ sex, scales = "free_y", ncol = 2) +
  custom_theme +
  labs(
    title = "What kinds of content do you usually engage with on social media?",
    subtitle = plt_subtitle,
    x = element_blank(),
    y = element_blank(),
    fill = element_blank()
  )

  ## saving plot
  ggsave(
    plot = plt_soc_med_content_gender,
    filename = "plot/soc_med_content_gender.jpg",
    unit = "in",
    height = 7,
    width = 12,
    dpi = 400
  )

## display plot
knitr::include_graphics("plot/soc_med_content_gender.jpg")

1.2.3 Social media content engagement by platform

  • Regardless of platform, students prioritize light, entertaining, and lifestyle-driven content, with serious topics less dominant.

  • Across platforms (Facebook, Instagram, TikTok, YouTube), entertainment, music, and lifestyle consistently ranked highest.

  • Educational and news content also attracted significant engagement, while politics and gaming were lower overall.

Code
## subtitle
plt_subtitle <- str_wrap("Across platforms, entertainment, music, and lifestyle content consistently drew the highest engagement, with Facebook, Instagram, TikTok, and YouTube showing similar patterns; educational and news content also ranked strongly, while politics and gaming remained lower overall.", 120)

plt_soc_med_content <- 
  soc_med_content_dta |> 
  filter(!str_detect( social_media, "All of it")) |> 
  count(social_media, social_media_content) |> 
  group_by(social_media) |> 
  mutate(pct = n / sum(n)) |> 
  mutate(social_media_content = reorder_within(social_media_content, pct, social_media)) |> 
  mutate(pct_label = str_c("n=", n, " (", round(pct*100, ), "%)")) |> 
  ggplot(aes(pct, social_media_content)) + 
  geom_col(width = 0.8) +
  geom_text(aes(label = pct_label), hjust = -0.1) +
  scale_x_continuous(limits = c(0, 0.3), labels = scales::percent_format()) +
  scale_y_reordered() +
  facet_wrap(~ social_media, scales = "free_y", ncol = 2) +
  custom_theme +
  labs(
    title = "What kinds of content do you usually engage with on social media?",
    subtitle = plt_subtitle,
    x = element_blank(),
    y = element_blank()
  )

  ## saving plot
  ggsave(
    plot = plt_soc_med_content,
    filename = "plot/soc_med_content.jpg",
    unit = "in",
    height = 14,
    width = 12,
    dpi = 400
  )

## display plot
knitr::include_graphics("plot/soc_med_content.jpg")

1.2.4 Daily time spent on social media by platform

  • Heavy usage patterns suggest social media is deeply embedded in daily routines, with some platforms fostering extended engagement.

  • Majority of students spend 3–6 hours daily on Facebook, Instagram, TikTok, and YouTube.

  • A notable proportion also reported more than 6 hours, especially on platforms like Reddit, X (Twitter), and Tumblr.

Code
# plot subtitle
plt_subtitle <- str_wrap("Most students reported spending 3–6 hours daily on social media, with Facebook, Instagram, TikTok, and YouTube showing the highest sustained use; a notable share of users also exceeded 6 hours, highlighting heavy engagement across platforms.", 120)

## plottign socila media hours use
plt_soc_med_hours <- 
  soc_med_category |> 
  filter(!str_detect( social_media, "All of|Tele")) |> 
  count(social_media, social_media_hours) |> 
  group_by(social_media) |> 
  mutate(pct = n / sum(n)) |> 
  mutate(social_media_hours = reorder_within(social_media_hours, pct, social_media)) |> 
  mutate(pct_label = str_c("n=", n, " (", round(pct*100, ), "%)")) |> 
  ggplot(aes(pct, social_media_hours)) + 
  geom_col(width = 0.8, position = position_dodge2(preserve = "single")) +
  geom_text(aes(label = pct_label), hjust = -0.1) +
  scale_x_continuous(limits = c(0, 1), labels = scales::percent_format()) +
  scale_y_reordered() +
  facet_wrap(~ social_media, scales = "free_y", ncol = 2) +
  custom_theme +
  labs(
    title = "On average, how many hours per day do you spend on social media?",
    x = NULL,
    y = NULL,
    subtitle = plt_subtitle
  )


## saving plot
ggsave(
  plot = plt_soc_med_hours,
  filename = "plot/soc_med_hours.jpg",
  unit = "in",
  height = 10,
  width = 10,
  dpi = 400
  )

## display plot
knitr::include_graphics("plot/soc_med_hours.jpg")

1.2.5 Daily time spent on social media by platform

  • Male students demonstrate more extreme usage, while female students cluster around moderate-to-high daily engagement

  • Females most often reported 3–6 hours daily, with fewer exceeding 6 hours.

  • Males were more likely to report over 6 hours of use, showing heavier overall consumption.

Code
# plot subtitle
plt_subtitle <- str_wrap("Female students most often reported spending 3–6 hours daily on social media, while males were more likely to exceed 6 hours; overall, both groups showed heavy usage concentrated in the mid-to-high ranges.", 100)

## plottign socila media hours use
plt_soc_med_hours_gender <- 
  soc_med_category |> 
  count(sex, social_media_hours) |> 
  group_by(sex) |> 
  mutate(pct = n / sum(n)) |> 
  mutate(social_media_hours = reorder_within(social_media_hours, pct, sex)) |> 
  mutate(pct_label = str_c("n=", n, " (", round(pct*100, ), "%)")) |> 
  ggplot(aes(pct, social_media_hours, fill = sex)) + 
  geom_col(width = 0.6, position = position_dodge2(preserve = "single")) +
  geom_text(aes(label = pct_label), hjust = -0.1) +
  scale_x_continuous(limits = c(0, 1), labels = scales::percent_format()) +
  scale_y_reordered() +
  facet_wrap(~ sex, scales = "free", ncol = 2) +
  custom_theme +
  labs(
    title = str_wrap("On average, how many hours per day do you spend on social media?", 60),
    x = NULL,
    y = NULL,
    fill = NULL,
    subtitle = plt_subtitle
  )


## saving plot
ggsave(
  plot = plt_soc_med_hours_gender,
  filename = "plot/soc_med_hours_gender.jpg",
  unit = "in",
  height = 6,
  width = 8,
  dpi = 400
  )

## display plot
knitr::include_graphics("plot/soc_med_hours_gender.jpg")

1.3 Rage bait factors

1.3.1 Affective Susceptability

  • Respondents see rage-bait as emotionally powerful and stress-inducing, especially when severe, but many also claim resilience or neutrality, reflecting a tension between vulnerability and critical resistance.

  • The strongest consensus was on the statement β€œIt is easy for users to become angry without knowing the full story” β€” over 80% agreed, showing that respondents recognize how manipulative and emotionally triggering rage-bait can be.

  • About two-thirds agreed that emotions rise depending on the gravity of rage-bait posts, highlighting that the severity of content directly influences emotional impact.

  • Just over half agreed that rage-bait makes social media stressful, while a large neutral group (32%) suggests variability in how strongly stress is felt.

  • Around 40% disagreed with β€œI believe posts that are emotional rather than factual”, showing that many respondents are critical of emotionally manipulative content, though neutrality (32%) indicates some ambivalence.

Code
plt_affective_fct <- plt_rage_fct("Affective")

## saving plot
ggsave(
  plot = plt_affective_fct,
  filename = "plot/fct_affective.jpg",
  unit = "in",
  width = 11,
  height = 6,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_affective.jpg")

1.3.2 Critical Evaluation

  • Critical Evaluation is characterized by strong consensus on fact-checking and contextual reading, clear recognition of manipulation, but mixed attitudes toward judging credibility by author background. This shows respondents value rational evaluation but remain divided on how to apply it in practice.

  • An overwhelming majority (93% Agree/Strongly Agree) believe provocative posts should be fact-checked rather than reacted to emotionally, showing a strong preference for rational evaluation over impulsive responses.

  • Similarly, 95% Agree/Strongly Agree that users should be reminded to read more context before reacting, highlighting a widespread recognition of the importance of contextual understanding in digital literacy.

  • A large majority (93% Agree/Strongly Agree) acknowledge that others often fail to recognize emotional manipulation online, suggesting strong awareness of how rage-bait exploits emotional triggers.

  • Responses were more divided on judging provocative posts based on author’s background β€” 32% Agree/Strongly Agree, 43% Neutral, and 26% Disagree/Strongly Disagree. This indicates uncertainty or ambivalence about whether credibility should be judged based on the author’s identity rather than content itself.

Code
plt_critical_eval_fct <- plt_rage_fct("Critical")

## saving plot
ggsave(
  plot = plt_critical_eval_fct,
  filename = "plot/fct_critical_eval.jpg",
  unit = "in",
  width = 11,
  height = 5,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_critical_eval.jpg")

1.3.3 Perceived Risks

  • Respondents see rage-bait as highly damaging across multiple dimensions β€” reputational, emotional, mental health, social cohesion, and community toxicity. The strongest consensus lies in its destructive and divisive nature.

  • Over 90% of respondents agreed that rage-baiting can intentionally ruin or destroy reputations, showing strong consensus that reputational harm is a major risk.

  • Around 91% agreed that rage-bait emotionally harms people, and another 91% agreed it can take a toll on mental health. This highlights the dual psychological risks of rage-bait content.

  • Roughly 88% agreed rage-bait posts divide rather than foster shared understanding, and 90% agreed people disrespect others when engaged in rage-bait discussions. This highlights its polarizing and hostile effects on online communities.

  • About 91% agreed that online spaces have become more toxic due to rage-bait, pointing to its broader societal impact beyond individual harm.

Code
plt_perceived_risk_fct <- plt_rage_fct("Perceived Risk")

## saving plot
ggsave(
  plot = plt_perceived_risk_fct,
  filename = "plot/fct_perceived_risk.jpg",
  unit = "in",
  width = 11,
  height = 7,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_perceived_risk.jpg")

1.3.4 Rage Bait Amplication

  • Respondents clearly see rage-bait amplification as algorithmically driven and engagement-fueled, with controversial content outperforming positive posts. While vloggers are seen as contributors, the strongest consensus lies in the role of user engagement and platform visibility metrics.

  • Nearly 80% agreed that rage-bait spreads through users’ active engagement, showing strong awareness that clicks, shares, and comments fuel its visibility.

  • Over 80% agreed that controversial posts become more visible in engagement metrics, highlighting how platform algorithms reward divisive content.

  • About 71% agreed that rage-bait receives more engagement than positive posts, reinforcing the perception that negativity drives interaction more than constructive content.

  • Around 63% agreed vloggers help spread rage-bait, but 31% remained neutral. This suggests recognition of influencer involvement, though respondents are less certain compared to other amplification mechanisms.

Code
plt_rb_amplication_fct <- plt_rage_fct("Bait Amplication")

## saving plot
ggsave(
  plot = plt_rb_amplication_fct,
  filename = "plot/fct_rb_amplication.jpg",
  unit = "in",
  width = 11,
  height = 5,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_rb_amplication.jpg")

1.3.5 Rage Bait Cue Recognition

  • Respondents are highly confident in recognizing personality attacks and provocative intent as rage-bait cues, and moderately confident about aggressive imagery. However, stylistic signals like red text or bold/caps are not reliable markers in the eyes of users, with most respondents remaining neutral or divided.

  • 83% (Agree + Strongly Agree) identified attacks on others’ personalities as rage-bait. This is the most confidently recognized signal, showing that respondents clearly associate personal attacks with manipulative content.

  • 68% (Agree + Strongly Agree) saw aggressive images as intended to trigger, while 30% were neutral and only 2% disagreed. This indicates strong recognition, though a sizable neutral group suggests some uncertainty about visual cues.

  • 88% (Agree + Strongly Agree) said they can easily recognize posts meant to provoke anger, with only 11% neutral and 1% disagreeing. This shows high confidence in spotting provocation cues, making it one of the most strongly endorsed indicators.

  • For bold/caps, 35% agreed, but 44% were neutral and 21% disagreed. For red text/graphics, only 26% agreed, while 53% were neutral and 21% disagreed. These stylistic features are not consistently perceived as rage-bait cues, reflecting low recognition compared to content-based signals.

Code
plt_rb_cue_recognition_fct <- plt_rage_fct("Cue Recognition")

## saving plot
ggsave(
  plot = plt_rb_cue_recognition_fct,
  filename = "plot/fct_rb_cue_recognition.jpg",
  unit = "in",
  width = 11,
  height = 6,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_rb_cue_recognition.jpg")

1.3.6 Rage Bait Engagement

  • Respondents show high awareness of rage-bait as attention-seeking and mostly avoid actively amplifying it. However, passive engagement is widespread β€” reading comments, observing heated arguments, or occasionally reacting when personally invested. The data reveals a tension: low active contribution but high passive consumption, which still sustains rage-bait’s visibility and impact.

  • While many avoid aggressive defense, a notable minority still engage in heated exchanges when provoked. 23% (Strongly Disagree) + 34% (Disagree) avoid defending opinions aggressively. Yet 13% (Agree + Strongly Agree) admitted to doing so, with 32% neutral.

  • Respondents clearly recognize rage-bait as a deliberate tactic for visibility.90% (Agree + Strongly Agree) believe others use rage-bait to gain attention online.

  • Engagement is situational β€” some share when personally affected, but many resist. About 33% (Agree + Strongly Agree) admitted to reacting/sharing rage-bait when they relate to the issue. Meanwhile, 41% (Disagree + Strongly Disagree) resisted, and 27% were neutral.

  • Passive consumption (comment reading) is a dominant form of engagement, even among those who don’t actively post. A strong majority (72% Agree + Strongly Agree) said they read comments when curious about rage posts. Only 5% disagreed, while 22% were neutral.

  • 40% (Agree + Strongly Agree) enjoy reading heated arguments, while 30% disagreed and 31% were neutral. A significant portion finds entertainment in conflict, though others remain disengaged or indifferent.

  • Most respondents avoid being direct amplifiers of rage-bait. Only 9% (Agree + Strongly Agree) admitted to contributing by sharing rage-bait posts. In contrast, 77% (Disagree + Strongly Disagree) rejected this behavior, with 14% neutral.

Code
plt_rb_engagement_fct <- plt_rage_fct("Engagement")

## saving plot
ggsave(
  plot = plt_rb_engagement_fct,
  filename = "plot/fct_rb_engagement.jpg",
  unit = "in",
  width = 11,
  height = 6,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_rb_engagement.jpg")

1.3.7 Self-Regulation/Rage Bait Avoidance

  • Respondents demonstrate high levels of self‑regulation when faced with rage‑bait. They scroll past and ignore content to minimize its impact. Most importantly, they avoid replying to prevent conflict, which is the most strongly endorsed behavior. This indicates that while rage‑bait is recognized as harmful, users actively employ avoidance strategies to maintain control and reduce emotional or social fallout.

  • Most respondents practice passive avoidance, choosing not to engage directly. 75% (Agree + Strongly Agree) said they usually scroll past rage‑bait posts without reacting. Only 8% disagreed, while 18% were neutral.

  • Ignoring is a deliberate self‑regulation strategy to protect emotional well‑being. 72% (Agree + Strongly Agree) reported ignoring rage‑bait content to avoid being influenced. Again, only 8% disagreed, with 21% neutral.

  • Conflict avoidance is the most consistently endorsed form of self‑regulation, showing strong consensus. 88% (Agree + Strongly Agree) avoid replying to provocative posts to prevent conflict. Just 12% were neutral, and none disagreed.

Code
plt_rb_avoidance_fct <- plt_rage_fct("Avoidance")

## saving plot
ggsave(
  plot = plt_rb_avoidance_fct,
  filename = "plot/fct_rb_avoidance.jpg",
  unit = "in",
  width = 11,
  height = 4,
  dpi = 400
)

## diplay plot
knitr::include_graphics("plot/fct_rb_avoidance.jpg")

2 Exploratory Factor Analysis

2.1 Parallel analysis

Code
## parallel analysis
fa.parallel(fct_likert_dta, fa = "fa")

Parallel analysis suggests that the number of factors =  4  and the number of components =  NA 

2.2 Factor extraction

2.2.1 7 factors extracted

Code
# 7 factors
## elinating items
fa_rage_bait <- 
  fac(
  r = fct_likert_dta,
  nfactors = 7,
  rotate = "varimax"
)

## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)

Loadings:
     MR1    MR6    MR3    MR4    MR5    MR2    MR7   
ce3   0.614                                          
ce4   0.605                                          
as5   0.544  0.435                                   
pr1   0.686                                          
pr2   0.833                                          
pr3   0.740                                          
pr4   0.724                                          
pr5   0.716                                          
pr6   0.701                                          
pr7   0.686                                          
rcr5         0.617                                   
rba2         0.603                                   
rba3         0.583                                   
rba4         0.539                                   
ce1          0.642                                   
sr1                 0.833                            
sr2                 0.665                            
sr3                 0.598                            
are1               -0.523                0.405       
as3                        0.522                     
rcr2                              0.523              
rcr4                              0.754              
as1                                      0.700       
rba1                                            0.685
rcr1         0.468                                   
rcr3                              0.418              
ce2   0.463                                          
as2                        0.456                     
as4                        0.495                     
are2         0.414                                   
are3         0.407                                   
are4               -0.361                            
are5               -0.452                            
are6  0.427                                          

                 MR1   MR6   MR3   MR4   MR5   MR2   MR7
SS loadings    5.977 3.341 2.662 1.370 1.306 1.141 1.003
Proportion Var 0.176 0.098 0.078 0.040 0.038 0.034 0.029
Cumulative Var 0.176 0.274 0.352 0.393 0.431 0.465 0.494

2.2.2 5 factors extracted

Code
# 5 factors
## elinating items
fct_likert_rm_dta <- 
  fct_likert_dta |>
  select(-starts_with("ce"), -pr6, -pr7, -as1, -as4, -as5, -rcr3, -rba1, -are5)

fa_rage_bait <- 
  fac(
  r = fct_likert_rm_dta,
  nfactors = 5,
  rotate = "varimax"
)

## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)

Loadings:
     MR1    MR3    MR2    MR4    MR5   
pr1   0.646                            
pr2   0.839                            
pr3   0.850                            
pr4   0.726                            
pr5   0.643                            
rcr5         0.544                     
rba2         0.624                     
rba3         0.614                     
rba4         0.644                     
are2         0.512                     
sr1                 0.796              
sr2                 0.685              
sr3                 0.594              
rcr2                       0.548       
rcr4                       0.796       
as2                               0.639
as3                               0.523
rcr1         0.497                     
are1               -0.487              
are3         0.361                     
are4                                   
are6         0.424                     

                 MR1   MR3   MR2   MR4   MR5
SS loadings    3.247 2.735 2.064 1.069 0.950
Proportion Var 0.148 0.124 0.094 0.049 0.043
Cumulative Var 0.148 0.272 0.366 0.414 0.458

2.2.3 4 factors extracted

  • MR1: Risk Awareness
  • MR3: Rage bait recognition
  • MR2: Avoidance behavior
  • MR4: Affective susceptabilty
Code
# 4 factors
## elinating items
fct_likert_rm_dta <- 
  fct_likert_dta |> 
  select(-as5, -are1, -are2, -are3, -are4, -are5, -are6, -rcr1, -rcr2, -rcr3, -rcr4, -pr6, -pr7, -rba1, -as1, -pr1, -pr3)

fa_rage_bait <- 
  fac(
  r = fct_likert_rm_dta,
  nfactors = 4,
  rotate = "varimax"
)

## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.46)

Loadings:
     MR1    MR3    MR2    MR4   
ce2   0.571                     
ce3   0.736                     
ce4   0.729                     
pr2   0.697                     
pr4   0.634                     
pr5   0.614                     
rcr5         0.612              
rba2         0.647              
rba3         0.587              
rba4         0.567              
ce1          0.616              
sr1                 0.821       
sr2                 0.631       
sr3                 0.679       
as3                        0.570
as4                        0.550
as2                        0.479

                 MR1   MR3   MR2   MR4
SS loadings    2.975 2.081 1.777 1.229
Proportion Var 0.175 0.122 0.105 0.072
Cumulative Var 0.175 0.297 0.402 0.474

3 PLS-SEM

3.1 Measurement and structural model

Code
# Define measurement model (outer model)
measurement_model <- constructs(
  composite("Risk Awareness",        
            multi_items(c(rep("ce", 3), rep("pr", 3)), c(2:4, c(2, 4, 5)))),              
  composite("Rage Bait Recognition",
            multi_items(c("rcr", rep("rba", 3), "ce"), c(5, 2:4, 1))),  
  composite("Avoidance Behavior", multi_items("sr", 1:3)),         

  composite("Affective Susceptibility", multi_items("as", 2:4))          
)

# Define structural model (inner model)
# Hypothesized paths based on your SEM framework
structural_model <- relationships(
  paths(from = "Rage Bait Recognition", to = c("Risk Awareness", "Affective Susceptibility", "Avoidance Behavior")),
  paths(from = "Risk Awareness", to = c("Avoidance Behavior", "Affective Susceptibility")),
  paths(from = "Affective Susceptibility", to = "Avoidance Behavior")
)

# Estimate the PLS model
pls_model <- estimate_pls(data = fct_likert_rm_dta,
                          measurement_model = measurement_model,
                          structural_model = structural_model)

# Summarize results
summary_pls_model <- summary(pls_model)

# plot the path diagram
plot(pls_model)

3.2 Bootstrapped PLS-SEM

Code
# Run bootstrapping with 1000 resamples 

boot_results <- bootstrap_model(pls_model, nboot = 10000, seed = 2026) 
plot(boot_results)
Code
# Summarize bootstrap results 
summary_boot_results <- summary(boot_results)

3.2.1 Path estimates

  • Rage bait recognition β†’ Risk awareness: Students who are better at recognizing rage bait cues and understanding how it spreads are also more likely to critically evaluate and perceive the risks of such content.

  • Rage bait recognition β†’ Affective susceptibility: Recognition of rage bait does not directly increase emotional vulnerability. In other words, just being able to spot rage bait doesn’t necessarily make students more emotionally reactive or stressed. Emotional susceptibility seems to be shaped more by risk awareness than recognition alone.

  • Rage bait recognition β†’ Avoidance behavior: Recognition of rage bait does not directly lead to avoidance. Students may recognize rage bait but still engage with it, ignore it, or react differently. Avoidance behavior is influenced more strongly by other factors (risk awareness and emotional susceptibility).

  • Risk awareness β†’ Affective susceptibility: Students who perceive higher risks (toxicity, harm, reputational damage) are also more emotionally susceptible. Awareness of risks seems to heighten emotional stress and vulnerability, suggesting that critical awareness can have a double edge: it informs but also sensitizes.

  • Risk awareness β†’ Avoidance behavior: Greater risk awareness encourages avoidance strategies. Students who understand the dangers of rage bait are more likely to scroll past, ignore, or disengage to protect themselves.

  • Affective susceptibility β†’ Avoidance behavior: Emotional vulnerability also drives avoidance. When students feel stressed or manipulated, they are more likely to regulate themselves by disengaging. This shows that avoidance is partly a coping mechanism for emotional strain.

Code
summary_boot_results$bootstrapped_paths |> 
  as.data.frame() |> 
  rownames_to_column("Path") |> 
  tibble() |> 
  mutate(across(.cols = is.numeric, ~ round(.x, 3))) |> 
  DT::datatable()

3.2.2 Indirect path estimates

  • Rage bait recognition β†’ Risk awareness β†’ affective susceptibility: This pathway shows that when students recognize rage bait cues, they become more aware of its risks, and this heightened awareness can make them more emotionally susceptible. In other words, recognition doesn’t directly trigger emotions, but it indirectly increases vulnerability by first raising awareness of harm. The relationship suggests that critical awareness can sensitize students emotionally.

  • Rage bait recognition β†’ Risk awareness β†’ Avoidance behavior: Recognition of rage bait leads to greater risk awareness, which then encourages avoidance behaviors (scrolling past, ignoring, disengaging). The relationship here is that recognition fosters awareness, and awareness motivates protective action. Even though recognition alone doesn’t drive avoidance, it indirectly does so through the mediating role of risk awareness.

  • Risk Awareness β†’ Affective Susceptibility β†’ Avoidance Behavior: Students who perceive risks may become more emotionally susceptible, and this emotional strain can then push them toward avoidance. The relationship here is that risk awareness heightens emotional vulnerability, which in turn encourages avoidance as a coping mechanism. This pathway highlights how awareness can indirectly lead to avoidance by first increasing susceptibility.

Code
summary_boot_results$bootstrapped_total_indirect_paths |> 
  as.data.frame() |> 
  rownames_to_column("Path") |> 
  tibble() |> 
  mutate(across(.cols = is.numeric, ~ round(.x, 3))) |> 
  DT::datatable()

3.2.3 Reliability

  • Rage bait recognition construct shows acceptable reliability. Cronbach’s alpha and composite reliability (rhoC) are both above the 0.70 threshold, indicating consistent measurement. The AVE (0.502) is just above 0.50, meaning the indicators explain more than half of the variance in the latent construct. Overall, this factor is reliable.

  • Risk awareness construct demonstrates strong reliability. Both alpha and rhoC are well above 0.80, showing high internal consistency. The AVE (0.55) exceeds the 0.50 benchmark, confirming good convergent validity.

  • Affective susceptibility construct is weak in reliability. Cronbach’s alpha and rhoC fall below the recommended 0.70 threshold, and AVE (0.447) is below 0.50, suggesting the items do not capture the construct consistently. This factor may need further refinement.

  • Avoidance behavior construct shows good reliability. Alpha and rhoC are above 0.70, and AVE (0.664) is well above 0.50, meaning the items strongly represent the latent variable. This is a stable and well-measured construct.

Code
summary_pls_model$reliability |> 
  as.data.frame() |> 
  rownames_to_column("Factors") |> 
  mutate(across(is.numeric, ~ round(.x, 3))) |> 
  as.tibble() |> 
  DT::datatable()

3.2.4 Validity

3.2.4.1 Fornell-Larcker Criterion

  • The diagonal values (0.708, 0.742, 0.668, 0.815) are the square roots of AVE for each construct. The off‑diagonal values are the correlations between constructs. Discriminant validity is established when each diagonal value is greater than the correlations in its row/column.

  • All four constructs meet the Fornell–Larcker criterion: each shares more variance with its own indicators than with other constructs.

  • Risk Awareness and Affective Susceptibility show the highest correlation (0.314), which is expected since awareness of risks can heighten emotional vulnerability.

  • Avoidance Behavior is the most distinct construct, with the highest √AVE (0.815) and the lowest correlations.

  • This confirms the measurement model has good discriminant validity β€” the constructs are related but not redundant.

Code
summary_pls_model$validity$fl_criteria |> 
  as.data.frame() |> 
  rownames_to_column("Factors") |> 
  mutate(across(is.numeric, ~ round(.x, 3))) |> 
  as.tibble() |> 
  DT::datatable()

3.2.4.2 Heterotrait-Monotrait Criterion

  • HTMT assesses discriminant validity by examining the ratio of between-construct correlations to within-construct correlations.

  • Rule of thumb: HTMT values should be below 0.85 (conservative) or below 0.90 (liberal). Values above these thresholds suggest constructs may not be distinct.

  • All HTMT values are well below 0.85, confirming strong discriminant validity across your four constructs.

  • The highest relationship is between Recognition and Awareness (0.512), which makes theoretical sense β€” spotting rage bait often leads to perceiving risks.

  • Avoidance Behavior is the most distinct construct, with very low HTMT values relative to the others.

  • Together with the Fornell–Larcker results, this shows the measurement model has robust discriminant validity. The constructs are related but not overlapping excessively.

Code
summary_pls_model$validity$htmt |> 
  as.data.frame() |> 
  rownames_to_column("Factors") |> 
  mutate(across(is.numeric, ~ round(.x, 3))) |> 
  as.tibble() |> 
  DT::datatable()